package demo.thread;

public class IncDecDemo1 {

    private int j=10;
    
    /*
     * 题目:用JAVA写一个多线程程序，写四个线程，其中二个对一个变量加1，另外二个对一个变量减1
     * 两个问题：
     * 1、线程同步--synchronized
     * 2、线程之间如何共享同一个j变量--内部类
     */
    public static void main(String[] args) {
    	IncDecDemo1 incDec=new IncDecDemo1();
        Inc inc=incDec.new Inc();
        Dec dec=incDec.new Dec();
        for(int i=0;i<2;i++){
            Thread thread=new Thread(inc);
            thread.start();
            thread=new Thread(dec);
            thread.start();
        }
    }

    public synchronized void inc(){
        j++;
        System.out.println(Thread.currentThread().getName()+"-inc:"+j);
    }
    public synchronized void dec(){
        j--;
        System.out.println(Thread.currentThread().getName()+"-dec:"+j);
    }
    
    class Inc implements Runnable{
        public void run(){
            for(int i=0;i<5;i++){
                inc();
            }
        }
    }
    class Dec implements Runnable{
        public void run(){
            for(int i=0;i<5;i++){
                dec();
            }
        }
    }
}